// app/[lng]/purchase-requests/page.tsx import * as React from "react"; import { type SearchParams } from "@/types/table"; import { getValidFilters } from "@/lib/data-table"; import { Shell } from "@/components/shell"; import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Plus, FileText, Clock, CheckCircle, XCircle, Send } from "lucide-react"; import Link from "next/link"; import { searchParamsPurchaseRequestCache } from "@/lib/itb/validations"; import { getAllPurchaseRequests, getPurchaseRequestStats } from "@/lib/itb/service"; import { PurchaseRequestsTable } from "@/lib/itb/table/purchase-requests-table"; import { useTranslation } from "@/i18n" interface PurchaseRequestsPageProps { params: Promise<{ lng: string }>; searchParams: Promise; } export default async function PurchaseRequestsPage(props: PurchaseRequestsPageProps) { const { lng } = await props.params const { t } = await useTranslation(lng, 'menu') const searchParams = await props.searchParams; // Parse search params const search = searchParamsPurchaseRequestCache.parse(searchParams); const validFilters = getValidFilters(search.filters); // Load data const promises = Promise.all([ getAllPurchaseRequests({ ...search, filters: validFilters, }), getPurchaseRequestStats(), ]); return (

{t('menu.engineering_management.itb')}

{t('menu.engineering_management.itb_desc')}

{/* 통계 카드 */} {[...Array(6)].map((_, i) => (
))}
} > } > ); } // 통계 컴포넌트 async function PurchaseRequestStats({ promises }: { promises: Promise<[any, any]> }) { const [, stats] = await promises; const statCards = [ { title: "전체", value: stats?.total || 0, icon: FileText, color: "text-blue-500", }, { title: "작성중", value: stats?.draft || 0, icon: Clock, color: "text-gray-500", }, { title: "RFQ 생성", value: stats?.rfqCreated || 0, icon: Send, color: "text-red-500", }, ]; return (
{statCards.map((card, index) => { const Icon = card.icon; return ( {card.title}
{card.value}
); })}
); } // Metadata export const metadata = { title: "Purchase Request Management", description: "Create and manage material purchase requests for projects", };